package net.suncaper.psychological.mapper;

import net.suncaper.psychological.model.domain.TimeConfig;
import java.util.List;
import java.util.Map;

/**
 * 时间配置数据访问层接口
 */
public interface TimeConfigMapper {
    
    /**
     * 保存时间配置
     * @param timeConfig 时间配置对象
     * @return 是否成功
     */
    boolean save(TimeConfig timeConfig);
    
    /**
     * 根据ID删除时间配置
     * @param id 配置ID
     * @return 是否成功
     */
    boolean deleteById(Long id);
    
    /**
     * 更新时间配置
     * @param timeConfig 时间配置对象
     * @return 是否成功
     */
    boolean update(TimeConfig timeConfig);
    
    /**
     * 根据ID查询时间配置
     * @param id 配置ID
     * @return 时间配置对象
     */
    TimeConfig findById(Long id);
    
    /**
     * 查询所有时间配置
     * @return 时间配置列表
     */
    List<TimeConfig> findAll();
    
    /**
     * 根据配置类型查询时间配置
     * @param configType 配置类型
     * @return 时间配置列表
     */
    List<TimeConfig> findByConfigType(String configType);
    
    /**
     * 根据启用状态查询时间配置
     * @param isActive 是否启用
     * @return 时间配置列表
     */
    List<TimeConfig> findByIsActive(Boolean isActive);
    
    /**
     * 根据配置类型和启用状态查询时间配置
     * @param configType 配置类型
     * @param isActive 是否启用
     * @return 时间配置列表
     */
    List<TimeConfig> findByConfigTypeAndIsActive(String configType, Boolean isActive);
    
    /**
     * 批量更新启用状态
     * @param ids 配置ID列表
     * @param isActive 是否启用
     * @return 是否成功
     */
    boolean updateIsActiveByIds(List<Long> ids, Boolean isActive);
    
    /**
     * 根据配置类型查询为Map格式的结果
     * @param configType 配置类型
     * @return Map格式的结果列表
     */
    List<Map<String, Object>> findMapsByConfigType(String configType);
} 